import pygame
from math import sin

class Entity(pygame.sprite.Sprite):
    def __init__(self, 精灵组):
        super().__init__(精灵组)
        self.动作帧 = 0
        self.动画切换速度 = 0.15
        self.方向 = pygame.math.Vector2()

        self.是否可以收到伤害 = True
        self.伤害开始时间 = None

    def 移动(self, 速度):
        if self.方向.magnitude() != 0:
            self.方向 = self.方向.normalize();

        self.碰撞区域.x += self.方向.x * 速度
        self.障碍('水平')
        self.碰撞区域.y += self.方向.y * 速度
        self.障碍('垂直')
        self.rect.center = self.碰撞区域.center

    def 障碍(self, 方向):
        # 首先通过障碍组获取到所有的障碍精灵
        for sprite in self.障碍精灵组:
            if sprite.碰撞区域.colliderect(self.碰撞区域):
                if 方向 == '水平':
                    if self.方向.x > 0:  # 向右移动
                        self.碰撞区域.right = sprite.碰撞区域.left
                    if self.方向.x < 0:  # 向左移动
                        self.碰撞区域.left = sprite.碰撞区域.right
                if 方向 == '垂直':
                    if self.方向.y > 0:  # 向下移动
                        self.碰撞区域.bottom = sprite.碰撞区域.top
                    if self.方向.y < 0:  # 向上移动
                        self.碰撞区域.top = sprite.碰撞区域.bottom

    def 伤害闪烁(self):
        数值 = sin(pygame.time.get_ticks())
        if 数值 >= 0:
            return 255
        else:
            return 0